Large-scale software applications, such as development environments, that are packaged and distributed to client computing devices, are becoming larger and more complex. An example development environment may be 4-8 Gigabytes or larger. Such a large development environment is too large to transmit over a network to client computing devices (e.g., programmers' or developers' desktop computers) using a conventional packaging tool.
Network installation may be used, but this is problematic because clients, such as the individual programmers or developers, may subsequently download and install patches, updates, and future versions without system administrator authorization. Because of this, the client computing devices do not remain consistent, as some are updated, some are not, etc. This leads to a non-heterogenous client computing device environment.
Additionally, some programmers would then be producing code that may account for updates that they had personally installed on their computing device, but the update may not yet have been installed systemwide. In this manner, the update level of the production code, which gets shipped out, is not in sync with the update level of the development environment.
Product license compliance is also challenging because manual loads by frustrated users in need of productivity tools make monitoring difficult.